#pragma once

#include "base/core/singleton.h"
#include "base/core/object_pool.h"
#include "Common/Timer/TimerAxis.h"
#include "ProtoBuffer/AllProtocol.h"
#include "Common/MessageDispatch/MessageDispatch.h"

//逻辑服全服数据管理（跟中心服全服数据之间的同步和通知）
class LGlobalMgr : public ITimerHandler,public ManualSingleton<LGlobalMgr>
{
	friend class ManualSingleton<LGlobalMgr>;
	enum
	{
		ETimer_GetGlobal = 1,
	};
public:
	LGlobalMgr();
	virtual ~LGlobalMgr();
	bool Init();
	void UnInit();
	///////////////////////////// ITimerHandler /////////////////////////////////////////////
	virtual void OnTimer(uint32_t nTimerID);
	//更新全服数据
	void UpdateGlobalData(const GlobalDataProto &proto);
	//获取全服数据
	const GlobalDataProto &GetGlobalData();
private:
	GlobalDataProto m_globalProto;
	bool m_hasInit; //是否已经初始化(启动的时候从中心服请求一次数据)
};

#define g_MakeLGlobalMgr() (LGlobalMgr::Instance())
#define g_GetLGlobalMgr()  (LGlobalMgr::GetInstance())
#define g_DelLGlobalMgr()  (LGlobalMgr::Destroy())